我們可以用if來判斷等腰三角形,等腰三角形就是兩邊一樣長,是的話就把結果印出來
#include <stdio.h>
int main(){
int side1,side2,side3;
printf("Please enter the the lengths: ");
scanf("%d%d%d", &side1, &side2, &side3);
if(side1==side2){
printf("Isoceles triangle\n");
}
if(side1==side3){
printf("Isoceles triangle\n");
}
return 0;
}
上面的程式碼中,要注意的是不行打side1=side2這是把右邊的值帶到左邊的意思,要==這樣才是等於的意思,如果有一邊等於另一邊,就會印出Isoceles triangle等腰直角三角形,但這邊又遇到一個問題了正三角形,就會顯示兩次Isoceles triangle,要如何只顯示一次呢,下程式碼
#include <stdio.h>
int main(){
int side1,side2,side3;
printf("Please enter the the lengths: ");
scanf("%d%d%d", &side1, &side2, &side3);
if(side1==side2){
printf("Isoceles triangle\n");
}
if(side1==side3&&side1!=side2){
printf("Isoceles triangle\n");
}
return 0;
}
只要我們將第一個等於第二邊但絕對不等於第三邊,這樣正三角行的Isoceles triangle就會只輸出一次了,但這還是有瑕疵,下程式碼
#include <stdio.h>
int main(){
int side1,side2,side3;
printf("Please enter the the lengths: ");
scanf("%d%d%d", &side1, &side2, &side3);
if(side1==side2||side1==side3){
printf("Isoceles triangle\n");
}
return 0;
}
我們可以用或者的概念,第一邊等於第二邊或者第一邊等於第三邊,不管我們條件多複雜我們只做一次printf,所以最多我們只做一次
我們可以先想一邊減少n的位數,一邊增加ans的值,和可以用n=n/10減少n的位數
#include<iostream>
using namespace std;
int main()
{
int n;
int ans;
while( cin >> n )
{
ans = 0;
while( n>0 )
{
n = n / 10;
ans = ans+1;
}
cout << ans << endl;
}
return 0;
}
上面的程式碼中,我們先假設兩個變數,一個要被側有幾位數的n和答案ans,如果這個被側的數字能一直被10除下去,答案就一直加1,除到不能被除10的時候,ans一直加1的最後就是答案
下面有更直觀的解法
#include<iostream>
using namespace std;
int main()
{
int n;
while( cin >> n )
{
if( n>=1 and n<=9 )
{
cout << 1 << endl;
}
if( n>=10 and n<=99 )
{
cout << 2 << endl;
}
if( n>=100 and n<=999 )
{
cout << 3 << endl;
}
if( n>=1000 and n<=9999 )
{
cout << 4 << endl;
}
if( n>=10000 and n<=99999 )
{
cout << 5 << endl;
}
if( n>=100000 and n<=999999 )
{
cout << 6 << endl;
}
}
return 0;
}
如果1<=n<=9則為1位數,如果10<=n<=99則為2位數,如果100<=n<=999則為3位數,如果1000<=n<=9999則為 4位數,依此類推